#ifndef Target_H
#define Target_H


//!Includes


#include <cv.h>
#include <cxcore.h>
#include <highgui.h>
#include "Pose.h"
//!Defines

//!Global Functions


namespace algorithms
{

/**
 * class Target
 *
 * Autor:David Bevilaqua
 *
 * DESCRIPTION:
 *
 */

class Target
{
public:

	//!Enums



	//!Constructors/Destructors

	/**
	 * Empty Constructor
	 */
	Target ( );

	/**
	 * Empty Destructor
	 */

	~Target ( );

	//!Public Attributes

	CvPoint m_TargetPoints[5];
	CvPoint m_TargetPointsRef[5];




	//!Public Accessor Methods
	void SetPoseRobot(CvPoint p,int th);
	Pose GetPoseRobot( );
	void SetPoseTarget(CvPoint p,int th);
	Pose GetPoseTarget( );
	int GetP( );
	int GetAlfa( );
	int GetBeta( );

	int GetOrientation( );
	int GetOrientationRef( );
	int GetDiffOrientation( );
	int GetEstOrientation( );
	int GetEstOrientationRef( );
	int GetDiffEstOrientation( );
	int GetDiffRightTarget();
	int GetDiffLeftTarget();
	int GetDiffUpTarget();
	int GetDiffDownTarget();
	int GetDiffCenterX();
	int GetDiffCenterY();
	int GetDiffDiagonal();
	int GetDiagonal();
	CvPoint GetCenter();

	//!Public Methods
	void Sort ( );
	void SartUp( );
protected:

	//!Protected Attributes



	//!Protected Methods


private:

	//!Private Attributes
	Pose m_PoseRobot;
	Pose m_PoseTarget;
	int m_iRightTarget;
	int m_iLeftTarget;
	int m_iDownTarget;
	int m_iUpTarget;
	int m_iDiagonal1;
	int m_iDiagonal2;
	int m_iEstOrientation;
	int m_iRightTargetRef;
	int m_iLeftTargetRef;
	int m_iDownTargetRef;
	int m_iUpTargetRef;
	int m_iDiagonal1Ref;
	int m_iDiagonal2Ref;
	int m_iEstOrientationRef;
	CvPoint m_TargetCenter;
	CvPoint m_TargetCenterRef;
	//!Private Methods
	void initAttributes ( );

};

};

#endif
